//package com.youyou.job.admin.service;
//
//import com.youyou.job.admin.core.util.CookieUtil;
//import com.youyou.job.admin.core.util.I18nUtil;
//import com.youyou.job.admin.core.util.JacksonUtil;
//import com.youyou.job.admin.dao.XxlJobUserDao;
//import com.youyou.job.core.biz.model.ReturnT;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.util.DigestUtils;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.math.BigInteger;
//
///**
// * @author xuxueli 2019-05-04 22:13:264
// */
//@Configuration
//public class LoginService {
//
//    public static final String LOGIN_IDENTITY_KEY = "XXL_JOB_LOGIN_IDENTITY";
//
//    @Resource
//    private XxlJobUserDao xxlJobUserDao;
//
//
//    private String makeToken(XxlJobUser xxlJobUser){
//        String tokenJson = JacksonUtil.writeValueAsString(xxlJobUser);
//        String tokenHex = new BigInteger(tokenJson.getBytes()).toString(16);
//        return tokenHex;
//    }
//    private XxlJobUser parseToken(String tokenHex){
//        XxlJobUser xxlJobUser = null;
//        if (tokenHex != null) {
//            String tokenJson = new String(new BigInteger(tokenHex, 16).toByteArray());      // username_password(md5)
//            xxlJobUser = JacksonUtil.readValue(tokenJson, XxlJobUser.class);
//        }
//        return xxlJobUser;
//    }
//
//
//    public ReturnT<String> login(HttpServletRequest request, HttpServletResponse response, String username, String password, boolean ifRemember){
//
//        // param
//        if (username==null || username.trim().length()==0 || password==null || password.trim().length()==0){
//            return new ReturnT<String>(500, I18nUtil.getString("login_param_empty"));
//        }
//
//        // valid passowrd
//        XxlJobUser xxlJobUser = xxlJobUserDao.loadByUserName(username);
//        if (xxlJobUser == null) {
//            return new ReturnT<String>(500, I18nUtil.getString("login_param_unvalid"));
//        }
//        String passwordMd5 = DigestUtils.md5DigestAsHex(password.getBytes());
//        if (!passwordMd5.equals(xxlJobUser.getPassword())) {
//            return new ReturnT<String>(500, I18nUtil.getString("login_param_unvalid"));
//        }
//
//        String loginToken = makeToken(xxlJobUser);
//
//        // do login
//        CookieUtil.set(response, LOGIN_IDENTITY_KEY, loginToken, ifRemember);
//        return ReturnT.SUCCESS;
//    }
//
//    /**
//     * logout
//     *
//     * @param request
//     * @param response
//     */
//    public ReturnT<String> logout(HttpServletRequest request, HttpServletResponse response){
//        CookieUtil.remove(request, response, LOGIN_IDENTITY_KEY);
//        return ReturnT.SUCCESS;
//    }
//
//    /**
//     * logout
//     *
//     * @param request
//     * @return
//     */
//    public XxlJobUser ifLogin(HttpServletRequest request, HttpServletResponse response){
//        String cookieToken = CookieUtil.getValue(request, LOGIN_IDENTITY_KEY);
//        if (cookieToken != null) {
//            XxlJobUser cookieUser = null;
//            try {
//                cookieUser = parseToken(cookieToken);
//            } catch (Exception e) {
//                logout(request, response);
//            }
//            if (cookieUser != null) {
//                XxlJobUser dbUser = xxlJobUserDao.loadByUserName(cookieUser.getUsername());
//                if (dbUser != null) {
//                    if (cookieUser.getPassword().equals(dbUser.getPassword())) {
//                        return dbUser;
//                    }
//                }
//            }
//        }
//        return null;
//    }
//
//
//}
